// pages/details/index.js
import * as apis from "../../apis/index";
import showToast from "../../utils/showToast.js";

Page({
  /**
   * 页面的初始数据
   */
  data: {
    //当前商品id
    id: 0,
    //商品详情
    goodsDetail: null,
    // 控制sheet的显示与隐藏
    isShowSheet: false,
    // 用户选择的商品数量
    count: 1,
    // 用户输入的祝福语
    blessing: "",
  },

  async getGoodsDetail() {
    try {
      const res = await apis.getGoodsDetail(this.data.id);
      this.setData({
        goodsDetail: res,
      });
    } catch (e) {}
  },
  /**
   * 点击立即购买按钮
   */
  buyNowHandler() {
    this.setData({
      isShowSheet: true,
    });
  },

  /**
   * 关闭 sheet 触发
   *  只要触发了关闭就执行，无论是点击关闭按钮还是遮罩
   */
  sheetCloseHandler() {
    // console.log("sheetCloseHandler");
    this.setData({
      isShowSheet: false,
    });
  },

  /**
   * 点击 sheet 遮罩层的时候触发
   *  只有在点击遮罩关闭的时候才触发
   */
  sheetClickOverlayHandler() {
    // console.log("sheetClickOverlayHandler");
  },

  /**
   * 监听stepper的change事件，并通过事件函数的event.detail获取到stepper的值
   */
  changeCountHandler(e) {
    this.setData({
      count: e.detail,
    });
  },

  /**
   * 监听 textarea 的 input，获取到用户输入的内容
   */
  inputBlessingHandler(e) {
    this.setData({
      blessing: e.detail.value,
    });
  },

  /**
   * 添加当前商品到购物车
   */
  async addToCartHandler() {
    try {
      await apis.addToCart(
        this.data.goodsDetail.id,
        this.data.count,
        this.data.blessing
      );
      // 如果已经登录，这里就表示添加到购物车成功了
      // 跳转到购物车页面
      // 因为 showToast 是异步关闭，并不会隐藏以后才执行后面代码，所以后续的代码放在 setTimeout 中处理
      // wx.showToast({
      //   title: "添加成功",
      //   icon: "success",
      //   duration: 2000,
      // });
      // wx.switchTab({
      //   url: "/pages/shopcart/index",
      // });
      // 可以使用定时器
      // wx.showToast({
      //   title: "添加成功",
      //   icon: "success",
      //   duration: 2000,
      // });
      // setTimeout(() => {
      //   wx.switchTab({
      //     url: "/pages/shopcart/index",
      //   });
      // }, 2000);

      // 我们可以使用自己封装的showToast
      await showToast({
        title: "添加成功",
        icon: "success",
        duration: 2000,
      });
      wx.switchTab({
        url: "/pages/shopcart/index",
      });
    } catch (e) {
      // 没有登录
      // console.log(e);
      wx.showModal({
        title: "提示",
        content: "你还没有登录，是否需要去登录？",
        success: (res) => {
          // 通过 res 获取到用户操作的结果：到底是点击了取消还是点击了确定
          // console.log("res", res);
          if (res.confirm) {
            // 点击了确定
            // 通过 redirect 可以在登录成功后再重定向回到这个页面
            // 注意：不要再query中在拼写 ? ，可以使用 & 传多个数据，在登录页面再进行拼接
            wx.navigateTo({
              url:
                "/pages/login/index?redirect=/pages/details/index&query=" +
                JSON.stringify({
                  id: this.data.goodsDetail.id,
                  a: 1,
                  b: 2,
                }),
            });
          }
        },
      });
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 通过url的query获取到商品的id
    this.setData({
      id: options.id,
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getGoodsDetail();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
});
